<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Reference Documentation</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="Reference Documentation"><link rel="next" href="spring-introduction.html" title="Part&nbsp;I.&nbsp;Overview of Spring Framework"><!--Begin Google Analytics code--><script type="text/javascript">
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script><script type="text/javascript">
			var pageTracker = _gat._getTracker("UA-2728886-3");
			pageTracker._setDomainName("none");
			pageTracker._setAllowLinker(true);
			pageTracker._trackPageview();
		</script><!--End Google Analytics code--></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Reference Documentation</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="spring-introduction.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><span class="productname">Spring Framework<br></span></div><div><h1 class="title"><a name="d0e1"></a>Reference Documentation</h1></div><div><p class="releaseinfo">3.0</p></div><div><p class="copyright">Copyright &copy; 2004-2010 Rod Johnson, Juergen Hoeller, Keith Donald, Colin Sampaleanu,
      Rob Harrop, Alef Arendsen, Thomas Risberg, Darren Davison, Dmitriy
      Kopylenko, Mark Pollack, Thierry Templier, Erwin Vervaet, Portia Tung,
      Ben Hale, Adrian Colyer, John Lewis, Costin Leau, Mark Fisher, Sam
      Brannen, Ramnivas Laddad, Arjen Poutsma, Chris Beams, Tareq Abedrabbo,
      Andy Clement, Dave Syer, Oliver Gierke</p></div><div><div class="legalnotice"><a name="d0e148"></a><p>Copies of this document may be made for your own use and for
      distribution to others, provided that you do not charge any fee for such
      copies and further provided that each copy contains this Copyright
      Notice, whether distributed in print or electronically.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="spring-introduction.html">I. Overview of Spring Framework</a></span></dt><dd><dl><dt><span class="chapter"><a href="overview.html">1. Introduction to Spring Framework</a></span></dt><dd><dl><dt><span class="section"><a href="overview.html#overview-dependency-injection">1.1. Dependency Injection and Inversion of Control</a></span></dt><dt><span class="section"><a href="overview.html#overview-modules">1.2. Modules</a></span></dt><dd><dl><dt><span class="section"><a href="overview.html#d0e276">1.2.1. Core Container</a></span></dt><dt><span class="section"><a href="overview.html#d0e315">1.2.2. Data Access/Integration</a></span></dt><dt><span class="section"><a href="overview.html#d0e364">1.2.3. Web</a></span></dt><dt><span class="section"><a href="overview.html#d0e400">1.2.4. AOP and Instrumentation</a></span></dt><dt><span class="section"><a href="overview.html#d0e423">1.2.5. Test</a></span></dt></dl></dd><dt><span class="section"><a href="overview.html#overview-usagescenarios">1.3. Usage scenarios</a></span></dt><dd><dl><dt><span class="section"><a href="overview.html#dependency-management">1.3.1. Dependency Management and Naming Conventions</a></span></dt><dd><dl><dt><span class="section"><a href="overview.html#d0e677">1.3.1.1. Spring Dependencies and Depending on Spring</a></span></dt><dt><span class="section"><a href="overview.html#d0e684">1.3.1.2. Maven Dependency Management</a></span></dt><dt><span class="section"><a href="overview.html#d0e719">1.3.1.3. Ivy Dependency Management</a></span></dt></dl></dd><dt><span class="section"><a href="overview.html#d0e743">1.3.2. Logging</a></span></dt><dd><dl><dt><span class="section"><a href="overview.html#d0e767">1.3.2.1. Not Using Commons Logging</a></span></dt><dt><span class="section"><a href="overview.html#d0e787">1.3.2.2. Using SLF4J</a></span></dt><dt><span class="section"><a href="overview.html#d0e826">1.3.2.3. Using Log4J</a></span></dt></dl></dd></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="spring-whats-new.html">II. What's New in Spring 3.0</a></span></dt><dd><dl><dt><span class="chapter"><a href="new-in-3.html">2. New Features and Enhancements in Spring 3.0</a></span></dt><dd><dl><dt><span class="section"><a href="new-in-3.html#new-in-3-intro">2.1. Java 5</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-in-3-improved-docs">2.2. Improved documentation</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-in-3-new-tutorial">2.3. New articles and tutorials</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-in-3-modules-build">2.4. New module organization and build system</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-in-3-features-overview">2.5. Overview of new features</a></span></dt><dd><dl><dt><span class="section"><a href="new-in-3.html#new-feature-java5">2.5.1. Core APIs updated for Java 5</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-feature-el">2.5.2. Spring Expression Language</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-feature-java-config">2.5.3. The Inversion of Control (IoC) container</a></span></dt><dd><dl><dt><span class="section"><a href="new-in-3.html#new-java-configuration">2.5.3.1. Java based bean metadata</a></span></dt><dt><span class="section"><a href="new-in-3.html#d0e1146">2.5.3.2. Defining bean metadata within components</a></span></dt></dl></dd><dt><span class="section"><a href="new-in-3.html#new-feature-convert-and-format">2.5.4. General purpose type conversion system and field formatting
      system</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-feature-oxm">2.5.5. The Data Tier</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-feature-rest">2.5.6. The Web Tier</a></span></dt><dd><dl><dt><span class="section"><a href="new-in-3.html#d0e1188">2.5.6.1. Comprehensive REST support</a></span></dt><dt><span class="section"><a href="new-in-3.html#d0e1221">2.5.6.2. @MVC additions</a></span></dt></dl></dd><dt><span class="section"><a href="new-in-3.html#new-feature-validation">2.5.7. Declarative model validation</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-feature-jee-6">2.5.8. Early support for Java EE 6</a></span></dt><dt><span class="section"><a href="new-in-3.html#new-feature-embedded-databases">2.5.9. Support for embedded databases</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="spring-core.html">III. Core Technologies</a></span></dt><dd><dl><dt><span class="chapter"><a href="beans.html">3. The IoC container</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-introduction">3.1. Introduction to the Spring IoC container and beans</a></span></dt><dt><span class="section"><a href="beans.html#beans-basics">3.2. Container overview</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-metadata">3.2.1. Configuration metadata</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-instantiation">3.2.2. Instantiating a container</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-xml-import">3.2.2.1. Composing XML-based configuration metadata</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-client">3.2.3. Using the container</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-definition">3.3. Bean overview</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-beanname">3.3.1. Naming beans</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-beanname-alias">3.3.1.1. Aliasing a bean outside the bean definition</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-class">3.3.2. Instantiating beans</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-class-ctor">3.3.2.1. Instantiation with a constructor</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-class-static-factory-method">3.3.2.2. Instantiation with a static factory method</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-class-instance-factory-method">3.3.2.3. Instantiation using an instance factory method</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="beans.html#beans-dependencies">3.4. Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-collaborators">3.4.1. Dependency injection</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-constructor-injection">3.4.1.1. Constructor-based dependency injection</a></span></dt><dt><span class="section"><a href="beans.html#beans-setter-injection">3.4.1.2. Setter-based dependency injection</a></span></dt><dt><span class="section"><a href="beans.html#d0e2309">3.4.1.3. Dependency resolution process</a></span></dt><dt><span class="section"><a href="beans.html#beans-some-examples">3.4.1.4. Examples of dependency injection</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-properties-detailed">3.4.2. Dependencies and configuration in detail</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-value-element">3.4.2.1. Straight values (primitives, Strings, and so
        on)</a></span></dt><dt><span class="section"><a href="beans.html#beans-ref-element">3.4.2.2. References to other beans (collaborators)</a></span></dt><dt><span class="section"><a href="beans.html#beans-inner-beans">3.4.2.3. Inner beans</a></span></dt><dt><span class="section"><a href="beans.html#beans-collection-elements">3.4.2.4. Collections</a></span></dt><dt><span class="section"><a href="beans.html#beans-null-element">3.4.2.5. Null and empty string values</a></span></dt><dt><span class="section"><a href="beans.html#beans-p-namespace">3.4.2.6. XML shortcut with the p-namespace</a></span></dt><dt><span class="section"><a href="beans.html#beans-compound-property-names">3.4.2.7. Compound property names</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-dependson">3.4.3. Using depends-on</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-lazy-init">3.4.4. Lazy-initialized
      beans</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-autowire">3.4.5. Autowiring collaborators</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-autowired-exceptions">3.4.5.1. Limitations and disadvantages of autowiring</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-autowire-candidate">3.4.5.2. Excluding a bean from autowiring</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-method-injection">3.4.6. Method injection</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-lookup-method-injection">3.4.6.1. Lookup method injection</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-arbitrary-method-replacement">3.4.6.2. Arbitrary method replacement</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-scopes">3.5. Bean scopes</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-scopes-singleton">3.5.1. The singleton scope</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-prototype">3.5.2. The prototype scope</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-sing-prot-interaction">3.5.3. Singleton beans with prototype-bean dependencies</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-other">3.5.4. Request, session, and global session scopes</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-scopes-other-web-configuration">3.5.4.1. Initial web configuration</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-request">3.5.4.2. Request scope</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-session">3.5.4.3. Session scope</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-global-session">3.5.4.4. Global session scope</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-other-injection">3.5.4.5. Scoped beans as dependencies</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-scopes-custom">3.5.5. Custom scopes</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-scopes-custom-creating">3.5.5.1. Creating a custom scope</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-scopes-custom-using">3.5.5.2. Using a custom scope</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-nature">3.6. Customizing the nature of a bean</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-lifecycle">3.6.1. Lifecycle callbacks</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-lifecycle-initializingbean">3.6.1.1. Initialization callbacks</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-lifecycle-disposablebean">3.6.1.2. Destruction callbacks</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-lifecycle-default-init-destroy-methods">3.6.1.3. Default initialization and destroy methods</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-lifecycle-combined-effects">3.6.1.4. Combining lifecycle mechanisms</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-lifecycle-processor">3.6.1.5. Startup and shutdown callbacks</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-shutdown">3.6.1.6. Shutting down the Spring IoC container gracefully in non-web
        applications</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-aware">3.6.2. ApplicationContextAware and
      BeanNameAware</a></span></dt><dt><span class="section"><a href="beans.html#aware-list">3.6.3. Other Aware interfaces</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-child-bean-definitions">3.7. Bean definition inheritance</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-extension">3.8. Container extension points</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-extension-bpp">3.8.1. Customizing beans using the
      BeanPostProcessor Interface 
      </a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-extension-bpp-examples-hw">3.8.1.1. Example: Hello World,
        BeanPostProcessor-style</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-extension-bpp-examples-rabpp">3.8.1.2. Example: The
        RequiredAnnotationBeanPostProcessor</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-extension-factory-postprocessors">3.8.2. Customizing configuration metadata with
      BeanFactoryPostProcessor interface</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-factory-placeholderconfigurer">3.8.2.1. Example: the
        PropertyPlaceholderConfigurer</a></span></dt><dt><span class="section"><a href="beans.html#beans-factory-overrideconfigurer">3.8.2.2. Example: the
        PropertyOverrideConfigurer</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-factory-extension-factorybean">3.8.3. Customizing instantiation logic with the
      FactoryBean Interface 
      </a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-annotation-config">3.9. Annotation-based container configuration</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-required-annotation">3.9.1. @Required</a></span></dt><dt><span class="section"><a href="beans.html#beans-autowired-annotation">3.9.2. @Autowired and @Inject</a></span></dt><dt><span class="section"><a href="beans.html#beans-autowired-annotation-qualifiers">3.9.3. Fine-tuning annotation-based autowiring with qualifiers</a></span></dt><dt><span class="section"><a href="beans.html#beans-custom-autowire-configurer">3.9.4. CustomAutowireConfigurer</a></span></dt><dt><span class="section"><a href="beans.html#beans-resource-annotation">3.9.5. @Resource</a></span></dt><dt><span class="section"><a href="beans.html#beans-postconstruct-and-predestroy-annotations">3.9.6. @PostConstruct and
      @PreDestroy</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-classpath-scanning">3.10. Classpath scanning and managed components</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-stereotype-annotations">3.10.1. @Component and further stereotype
      annotations</a></span></dt><dt><span class="section"><a href="beans.html#beans-scanning-autodetection">3.10.2. Automatically detecting classes and registering bean
      definitions</a></span></dt><dt><span class="section"><a href="beans.html#beans-scanning-filters">3.10.3. Using filters to customize scanning</a></span></dt><dt><span class="section"><a href="beans.html#beans-factorybeans-annotations">3.10.4. Defining bean metadata within components</a></span></dt><dt><span class="section"><a href="beans.html#beans-scanning-name-generator">3.10.5. Naming autodetected components</a></span></dt><dt><span class="section"><a href="beans.html#beans-scanning-scope-resolver">3.10.6. Providing a scope for autodetected components</a></span></dt><dt><span class="section"><a href="beans.html#beans-scanning-qualifiers">3.10.7. Providing qualifier metadata with annotations</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-java">3.11. Java-based container configuration</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-java-basic-concepts">3.11.1. Basic concepts: @Configuration and
      @Bean</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-instantiating-container">3.11.2. Instantiating the Spring container using
      AnnotationConfigApplicationContext</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-java-instantiating-container-contstructor">3.11.2.1. Simple construction</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-instantiating-container-register">3.11.2.2. Building the container programmatically using
        register(Class&lt;?&gt;...)</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-instantiating-container-scan">3.11.2.3. Enabling component scanning with
        scan(String...)</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-instantiating-container-web">3.11.2.4. Support for web applications with
        AnnotationConfigWebApplicationContext</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-java-composing-configuration-classes">3.11.3. Composing Java-based configurations</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-java-using-import">3.11.3.1. Using the @Import annotation</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-combining">3.11.3.2. Combining Java and XML configuration</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-java-bean-annotation">3.11.4. Using the @Bean annotation</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#beans-java-declaring-a-bean">3.11.4.1. Declaring a bean</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-injecting-dependencies">3.11.4.2. Injecting dependencies</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-lifecycle-callbacks">3.11.4.3. Receiving lifecycle callbacks</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-specifying-bean-scope">3.11.4.4. Specifying bean scope</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-customizing-bean-naming">3.11.4.5. Customizing bean naming</a></span></dt><dt><span class="section"><a href="beans.html#beans-java-bean-aliasing">3.11.4.6. Bean aliasing</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-java-further-information-java-config">3.11.5. Further information about how Java-based configuration works
      internally</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#context-load-time-weaver">3.12. Registering a LoadTimeWeaver</a></span></dt><dt><span class="section"><a href="beans.html#context-introduction">3.13. Additional Capabilities of the
    ApplicationContext</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#context-functionality-messagesource">3.13.1. Internationalization using
      MessageSource</a></span></dt><dt><span class="section"><a href="beans.html#context-functionality-events">3.13.2. Standard and Custom Events</a></span></dt><dt><span class="section"><a href="beans.html#context-functionality-resources">3.13.3. Convenient access to low-level resources</a></span></dt><dt><span class="section"><a href="beans.html#context-create">3.13.4. Convenient ApplicationContext
      instantiation for web applications</a></span></dt><dt><span class="section"><a href="beans.html#d0e8760">3.13.5. Deploying a Spring ApplicationContext as a J2EE RAR file</a></span></dt></dl></dd><dt><span class="section"><a href="beans.html#beans-beanfactory">3.14. The BeanFactory</a></span></dt><dd><dl><dt><span class="section"><a href="beans.html#context-introduction-ctx-vs-beanfactory">3.14.1. BeanFactory or
        ApplicationContext?</a></span></dt><dt><span class="section"><a href="beans.html#beans-servicelocator">3.14.2. Glue code and the evil singleton</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="resources.html">4. Resources</a></span></dt><dd><dl><dt><span class="section"><a href="resources.html#resources-introduction">4.1. Introduction</a></span></dt><dt><span class="section"><a href="resources.html#resources-resource">4.2. The Resource interface</a></span></dt><dt><span class="section"><a href="resources.html#resources-implementations">4.3. Built-in Resource implementations</a></span></dt><dd><dl><dt><span class="section"><a href="resources.html#resources-implementations-urlresource">4.3.1. UrlResource</a></span></dt><dt><span class="section"><a href="resources.html#resources-implementations-classpathresource">4.3.2. ClassPathResource</a></span></dt><dt><span class="section"><a href="resources.html#resources-implementations-filesystemresource">4.3.3. FileSystemResource</a></span></dt><dt><span class="section"><a href="resources.html#resources-implementations-servletcontextresource">4.3.4. ServletContextResource</a></span></dt><dt><span class="section"><a href="resources.html#resources-implementations-inputstreamresource">4.3.5. InputStreamResource</a></span></dt><dt><span class="section"><a href="resources.html#resources-implementations-bytearrayresource">4.3.6. ByteArrayResource</a></span></dt></dl></dd><dt><span class="section"><a href="resources.html#resources-resourceloader">4.4. The ResourceLoader</a></span></dt><dt><span class="section"><a href="resources.html#resources-resourceloaderaware">4.5. The ResourceLoaderAware interface</a></span></dt><dt><span class="section"><a href="resources.html#resources-as-dependencies">4.6. Resources as dependencies</a></span></dt><dt><span class="section"><a href="resources.html#resources-app-ctx">4.7. Application contexts and Resource paths</a></span></dt><dd><dl><dt><span class="section"><a href="resources.html#resources-app-ctx-construction">4.7.1. Constructing application contexts</a></span></dt><dd><dl><dt><span class="section"><a href="resources.html#resources-app-ctx-classpathxml">4.7.1.1. Constructing ClassPathXmlApplicationContext instances - shortcuts</a></span></dt></dl></dd><dt><span class="section"><a href="resources.html#resources-app-ctx-wildcards-in-resource-paths">4.7.2. Wildcards in application context constructor resource paths</a></span></dt><dd><dl><dt><span class="section"><a href="resources.html#resources-app-ctx-ant-patterns-in-paths">4.7.2.1. Ant-style Patterns</a></span></dt><dt><span class="section"><a href="resources.html#resources-classpath-wildcards">4.7.2.2. The classpath*: prefix</a></span></dt><dt><span class="section"><a href="resources.html#resources-wildcards-in-path-other-stuff">4.7.2.3. Other notes relating to wildcards</a></span></dt></dl></dd><dt><span class="section"><a href="resources.html#resources-filesystemresource-caveats">4.7.3. FileSystemResource caveats</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="validation.html">5. Validation, Data Binding, and Type Conversion</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#validation-introduction">5.1. Introduction</a></span></dt><dt><span class="section"><a href="validation.html#validator">5.2. Validation using Spring's Validator
      interface</a></span></dt><dt><span class="section"><a href="validation.html#validation-conversion">5.3. Resolving codes to error messages</a></span></dt><dt><span class="section"><a href="validation.html#beans-beans">5.4. Bean manipulation and the
      BeanWrapper</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#beans-beans-conventions">5.4.1. Setting and getting basic and nested properties</a></span></dt><dt><span class="section"><a href="validation.html#beans-beans-conversion">5.4.2. Built-in PropertyEditor
        implementations</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#beans-beans-conversion-customeditor-registration">5.4.2.1. Registering additional custom
          PropertyEditors</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="validation.html#core-convert">5.5. Spring 3 Type Conversion</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#core-convert-Converter-API">5.5.1. Converter SPI</a></span></dt><dt><span class="section"><a href="validation.html#core-convert-ConverterFactory-SPI">5.5.2. ConverterFactory</a></span></dt><dt><span class="section"><a href="validation.html#core-convert-GenericConverter-SPI">5.5.3. GenericConverter</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#core-convert-ConditionalGenericConverter-SPI">5.5.3.1. ConditionalGenericConverter</a></span></dt></dl></dd><dt><span class="section"><a href="validation.html#core-convert-ConversionService-API">5.5.4. ConversionService API</a></span></dt><dt><span class="section"><a href="validation.html#core-convert-Spring-config">5.5.5. Configuring a ConversionService</a></span></dt><dt><span class="section"><a href="validation.html#core-convert-programmatic-usage">5.5.6. Using a ConversionService programatically</a></span></dt></dl></dd><dt><span class="section"><a href="validation.html#format">5.6. Spring 3 Field Formatting</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#format-Formatter-SPI">5.6.1. Formatter SPI</a></span></dt><dt><span class="section"><a href="validation.html#format-CustomFormatAnnotations">5.6.2. Annotation-driven Formatting</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#format-annotations-api">5.6.2.1. Format Annotation API</a></span></dt></dl></dd><dt><span class="section"><a href="validation.html#format-FormatterRegistry-SPI">5.6.3. FormatterRegistry SPI</a></span></dt><dt><span class="section"><a href="validation.html#format-configuring-FormatterRegistry">5.6.4. Configuring Formatting in Spring MVC</a></span></dt></dl></dd><dt><span class="section"><a href="validation.html#validation-beanvalidation">5.7. Spring 3 Validation</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#validation-beanvalidation-overview">5.7.1. Overview of the JSR-303 Bean Validation API</a></span></dt><dt><span class="section"><a href="validation.html#validation-beanvalidation-spring">5.7.2. Configuring a Bean Validation Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#validation-beanvalidation-spring-inject">5.7.2.1. Injecting a Validator</a></span></dt><dt><span class="section"><a href="validation.html#validation-beanvalidation-spring-constraints">5.7.2.2. Configuring Custom Constraints</a></span></dt><dt><span class="section"><a href="validation.html#validation-beanvalidation-spring-other">5.7.2.3. Additional Configuration Options</a></span></dt></dl></dd><dt><span class="section"><a href="validation.html#validation-binder">5.7.3. Configuring a DataBinder</a></span></dt><dt><span class="section"><a href="validation.html#validation-mvc">5.7.4. Spring MVC 3 Validation</a></span></dt><dd><dl><dt><span class="section"><a href="validation.html#validation-mvc-triggering">5.7.4.1. Triggering @Controller Input Validation</a></span></dt><dt><span class="section"><a href="validation.html#validation-mvc-configuring">5.7.4.2. Configuring a Validator for use by Spring MVC</a></span></dt><dt><span class="section"><a href="validation.html#validation-mvc-jsr303">5.7.4.3. Configuring a JSR-303 Validator for use by Spring MVC</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="expressions.html">6. Spring Expression Language (SpEL)</a></span></dt><dd><dl><dt><span class="section"><a href="expressions.html#expressions-intro">6.1. Introduction</a></span></dt><dt><span class="section"><a href="expressions.html#expressions-features">6.2. Feature Overview</a></span></dt><dt><span class="section"><a href="expressions.html#expressions-evaluation">6.3. Expression Evaluation using Spring's Expression Interface</a></span></dt><dd><dl><dt><span class="section"><a href="expressions.html#d0e11747">6.3.1. The EvaluationContext interface</a></span></dt><dd><dl><dt><span class="section"><a href="expressions.html#d0e11802">6.3.1.1. Type Conversion</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="expressions.html#expressions-beandef">6.4. Expression support for defining bean definitions</a></span></dt><dd><dl><dt><span class="section"><a href="expressions.html#expressions-beandef-xml-based">6.4.1. XML based configuration</a></span></dt><dt><span class="section"><a href="expressions.html#expressions-beandef-annotation-based">6.4.2. Annotation-based configuration</a></span></dt></dl></dd><dt><span class="section"><a href="expressions.html#expressions-language-ref">6.5. Language Reference</a></span></dt><dd><dl><dt><span class="section"><a href="expressions.html#expressions-ref-literal">6.5.1. Literal expressions</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11888">6.5.2. Properties, Arrays, Lists, Maps, Indexers</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11906">6.5.3. Inline lists</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11915">6.5.4. Array construction</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11924">6.5.5. Methods</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11931">6.5.6. Operators</a></span></dt><dd><dl><dt><span class="section"><a href="expressions.html#d0e11934">6.5.6.1. Relational operators</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11947">6.5.6.2. Logical operators</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11955">6.5.6.3. Mathematical operators</a></span></dt></dl></dd><dt><span class="section"><a href="expressions.html#d0e11963">6.5.7. Assignment</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11977">6.5.8. Types</a></span></dt><dt><span class="section"><a href="expressions.html#d0e11993">6.5.9. Constructors</a></span></dt><dt><span class="section"><a href="expressions.html#expressions-ref-variables">6.5.10. Variables</a></span></dt><dd><dl><dt><span class="section"><a href="expressions.html#d0e12007">6.5.10.1. The #this and #root variables</a></span></dt></dl></dd><dt><span class="section"><a href="expressions.html#expressions-ref-functions">6.5.11. Functions</a></span></dt><dt><span class="section"><a href="expressions.html#d0e12033">6.5.12. Bean references</a></span></dt><dt><span class="section"><a href="expressions.html#d0e12040">6.5.13. Ternary Operator (If-Then-Else)</a></span></dt><dt><span class="section"><a href="expressions.html#d0e12053">6.5.14. The Elvis Operator</a></span></dt><dt><span class="section"><a href="expressions.html#d0e12071">6.5.15. Safe Navigation operator</a></span></dt><dt><span class="section"><a href="expressions.html#d0e12084">6.5.16. Collection Selection</a></span></dt><dt><span class="section"><a href="expressions.html#d0e12113">6.5.17. Collection Projection</a></span></dt><dt><span class="section"><a href="expressions.html#d0e12128">6.5.18. Expression templating</a></span></dt></dl></dd><dt><span class="section"><a href="expressions.html#expressions-example-classes">6.6. Classes used in the examples</a></span></dt></dl></dd><dt><span class="chapter"><a href="aop.html">7. Aspect Oriented Programming with Spring</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-introduction">7.1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-introduction-defn">7.1.1. AOP concepts</a></span></dt><dt><span class="section"><a href="aop.html#aop-introduction-spring-defn">7.1.2. Spring AOP capabilities and goals</a></span></dt><dt><span class="section"><a href="aop.html#aop-introduction-proxies">7.1.3. AOP Proxies</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-ataspectj">7.2. @AspectJ support</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-aspectj-support">7.2.1. Enabling @AspectJ Support</a></span></dt><dt><span class="section"><a href="aop.html#aop-at-aspectj">7.2.2. Declaring an aspect</a></span></dt><dt><span class="section"><a href="aop.html#aop-pointcuts">7.2.3. Declaring a pointcut</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-pointcuts-designators">7.2.3.1. Supported Pointcut Designators</a></span></dt><dt><span class="section"><a href="aop.html#aop-pointcuts-combining">7.2.3.2. Combining pointcut expressions</a></span></dt><dt><span class="section"><a href="aop.html#aop-common-pointcuts">7.2.3.3. Sharing common pointcut definitions</a></span></dt><dt><span class="section"><a href="aop.html#aop-pointcuts-examples">7.2.3.4. Examples</a></span></dt><dt><span class="section"><a href="aop.html#writing-good-pointcuts">7.2.3.5. Writing good pointcuts</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-advice">7.2.4. Declaring advice</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-advice-before">7.2.4.1. Before advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-advice-after-returning">7.2.4.2. After returning advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-advice-after-throwing">7.2.4.3. After throwing advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-advice-after-finally">7.2.4.4. After (finally) advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-ataspectj-around-advice">7.2.4.5. Around advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-ataspectj-advice-params">7.2.4.6. Advice parameters</a></span></dt><dt><span class="section"><a href="aop.html#aop-ataspectj-advice-ordering">7.2.4.7. Advice ordering</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-introductions">7.2.5. Introductions</a></span></dt><dt><span class="section"><a href="aop.html#aop-instantiation-models">7.2.6. Aspect instantiation models</a></span></dt><dt><span class="section"><a href="aop.html#aop-ataspectj-example">7.2.7. Example</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-schema">7.3. Schema-based AOP support</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-schema-declaring-an-aspect">7.3.1. Declaring an aspect</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-pointcuts">7.3.2. Declaring a pointcut</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-advice">7.3.3. Declaring advice</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-schema-advice-before">7.3.3.1. Before advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-advice-after-returning">7.3.3.2. After returning advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-advice-after-throwing">7.3.3.3. After throwing advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-advice-after-finally">7.3.3.4. After (finally) advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-advice-around">7.3.3.5. Around advice</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-params">7.3.3.6. Advice parameters</a></span></dt><dt><span class="section"><a href="aop.html#aop-ordering">7.3.3.7. Advice ordering</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-schema-introductions">7.3.4. Introductions</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-instatiation-models">7.3.5. Aspect instantiation models</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-advisors">7.3.6. Advisors</a></span></dt><dt><span class="section"><a href="aop.html#aop-schema-example">7.3.7. Example</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-choosing">7.4. Choosing which AOP declaration style to use</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-spring-or-aspectj">7.4.1. Spring AOP or full AspectJ?</a></span></dt><dt><span class="section"><a href="aop.html#aop-ataspectj-or-xml">7.4.2. @AspectJ or XML for Spring AOP?</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-mixing-styles">7.5. Mixing aspect types</a></span></dt><dt><span class="section"><a href="aop.html#aop-proxying">7.6. Proxying mechanisms</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-understanding-aop-proxies">7.6.1. Understanding AOP proxies</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-aspectj-programmatic">7.7. Programmatic creation of @AspectJ Proxies</a></span></dt><dt><span class="section"><a href="aop.html#aop-using-aspectj">7.8. Using AspectJ with Spring applications</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-atconfigurable">7.8.1. Using AspectJ to dependency inject domain objects with
      Spring</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-configurable-testing">7.8.1.1. Unit testing @Configurable
        objects</a></span></dt><dt><span class="section"><a href="aop.html#aop-configurable-container">7.8.1.2. Working with multiple application contexts</a></span></dt></dl></dd><dt><span class="section"><a href="aop.html#aop-ajlib-other">7.8.2. Other Spring aspects for AspectJ</a></span></dt><dt><span class="section"><a href="aop.html#aop-aj-configure">7.8.3. Configuring AspectJ aspects using Spring IoC</a></span></dt><dt><span class="section"><a href="aop.html#aop-aj-ltw">7.8.4. Load-time weaving with AspectJ in the Spring Framework</a></span></dt><dd><dl><dt><span class="section"><a href="aop.html#aop-aj-ltw-first-example">7.8.4.1. A first example</a></span></dt><dt><span class="section"><a href="aop.html#aop-aj-ltw-the-aspects">7.8.4.2. Aspects</a></span></dt><dt><span class="section"><a href="aop.html#aop-aj-ltw-aop_dot_xml">7.8.4.3. 'META-INF/aop.xml'</a></span></dt><dt><span class="section"><a href="aop.html#aop-aj-ltw-libraries">7.8.4.4. Required libraries (JARS)</a></span></dt><dt><span class="section"><a href="aop.html#aop-aj-ltw-spring">7.8.4.5. Spring configuration</a></span></dt><dt><span class="section"><a href="aop.html#aop-aj-ltw-environments">7.8.4.6. Environment-specific configuration</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="aop.html#aop-resources">7.9. Further Resources</a></span></dt></dl></dd><dt><span class="chapter"><a href="aop-api.html">8. Spring AOP APIs</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-api-introduction">8.1. Introduction</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-pointcuts">8.2. Pointcut API in Spring</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-api-concepts">8.2.1. Concepts</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-pointcut-ops">8.2.2. Operations on pointcuts</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-pointcuts-aspectj">8.2.3. AspectJ expression pointcuts</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-pointcuts-impls">8.2.4. Convenience pointcut implementations</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-api-pointcuts-static">8.2.4.1. Static pointcuts</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-pointcuts-dynamic">8.2.4.2. Dynamic pointcuts</a></span></dt></dl></dd><dt><span class="section"><a href="aop-api.html#aop-api-pointcuts-superclasses">8.2.5. Pointcut superclasses</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-pointcuts-custom">8.2.6. Custom pointcuts</a></span></dt></dl></dd><dt><span class="section"><a href="aop-api.html#aop-api-advice">8.3. Advice API in Spring</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-api-advice-lifecycle">8.3.1. Advice lifecycles</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-advice-types">8.3.2. Advice types in Spring</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-api-advice-around">8.3.2.1. Interception around advice</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-advice-before">8.3.2.2. Before advice</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-advice-throws">8.3.2.3. Throws advice</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-advice-after-returning">8.3.2.4. After Returning advice</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-advice-introduction">8.3.2.5. Introduction advice</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="aop-api.html#aop-api-advisor">8.4. Advisor API in Spring</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-pfb">8.5. Using the ProxyFactoryBean to create AOP proxies</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-pfb-1">8.5.1. Basics</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-pfb-2">8.5.2. JavaBean properties</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-pfb-proxy-types">8.5.3. JDK- and CGLIB-based proxies</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-proxying-intf">8.5.4. Proxying interfaces</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-proxying-class">8.5.5. Proxying classes</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-global-advisors">8.5.6. Using 'global' advisors</a></span></dt></dl></dd><dt><span class="section"><a href="aop-api.html#aop-concise-proxy">8.6. Concise proxy definitions</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-prog">8.7. Creating AOP proxies programmatically with the ProxyFactory</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-advised">8.8. Manipulating advised objects</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-autoproxy">8.9. Using the "autoproxy" facility</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-autoproxy-choices">8.9.1. Autoproxy bean definitions</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-api-autoproxy">8.9.1.1. BeanNameAutoProxyCreator</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-autoproxy-default">8.9.1.2. DefaultAdvisorAutoProxyCreator</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-autoproxy-abstract">8.9.1.3. AbstractAdvisorAutoProxyCreator</a></span></dt></dl></dd><dt><span class="section"><a href="aop-api.html#aop-autoproxy-metadata">8.9.2. Using metadata-driven auto-proxying</a></span></dt></dl></dd><dt><span class="section"><a href="aop-api.html#aop-targetsource">8.10. Using TargetSources</a></span></dt><dd><dl><dt><span class="section"><a href="aop-api.html#aop-ts-swap">8.10.1. Hot swappable target sources</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-ts-pool">8.10.2. Pooling target sources</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-ts-prototype">8.10.3. Prototype target sources</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-ts-threadlocal">8.10.4. ThreadLocal target sources</a></span></dt></dl></dd><dt><span class="section"><a href="aop-api.html#aop-extensibility">8.11. Defining new Advice types</a></span></dt><dt><span class="section"><a href="aop-api.html#aop-api-resources">8.12. Further resources</a></span></dt></dl></dd><dt><span class="chapter"><a href="testing.html">9. Testing</a></span></dt><dd><dl><dt><span class="section"><a href="testing.html#testing-introduction">9.1. Introduction to testing</a></span></dt><dt><span class="section"><a href="testing.html#unit-testing">9.2. Unit testing</a></span></dt><dd><dl><dt><span class="section"><a href="testing.html#mock-objects">9.2.1. Mock objects</a></span></dt><dd><dl><dt><span class="section"><a href="testing.html#mock-objects-jndi">9.2.1.1. JNDI</a></span></dt><dt><span class="section"><a href="testing.html#mock-objects-servlet">9.2.1.2. Servlet API</a></span></dt><dt><span class="section"><a href="testing.html#mock-objects-portlet">9.2.1.3. Portlet API</a></span></dt></dl></dd><dt><span class="section"><a href="testing.html#unit-testing-support-classes">9.2.2. Unit testing support classes</a></span></dt><dd><dl><dt><span class="section"><a href="testing.html#unit-testing-utilities">9.2.2.1. General utilities</a></span></dt><dt><span class="section"><a href="testing.html#unit-testing-spring-mvc">9.2.2.2. Spring MVC</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="testing.html#integration-testing">9.3. Integration testing</a></span></dt><dd><dl><dt><span class="section"><a href="testing.html#integration-testing-overview">9.3.1. Overview</a></span></dt><dt><span class="section"><a href="testing.html#integration-testing-goals">9.3.2. Goals of integration testing</a></span></dt><dd><dl><dt><span class="section"><a href="testing.html#testing-ctx-management">9.3.2.1. Context management and caching</a></span></dt><dt><span class="section"><a href="testing.html#testing-fixture-di">9.3.2.2. Dependency Injection of test fixtures</a></span></dt><dt><span class="section"><a href="testing.html#testing-tx">9.3.2.3. Transaction management</a></span></dt><dt><span class="section"><a href="testing.html#testing-support-classes">9.3.2.4. Support classes for integration testing</a></span></dt></dl></dd><dt><span class="section"><a href="testing.html#integration-testing-support-jdbc">9.3.3. JDBC testing support</a></span></dt><dt><span class="section"><a href="testing.html#integration-testing-annotations">9.3.4. Annotations</a></span></dt><dt><span class="section"><a href="testing.html#testcontext-framework">9.3.5. Spring TestContext Framework</a></span></dt><dd><dl><dt><span class="section"><a href="testing.html#testcontext-key-abstractions">9.3.5.1. Key abstractions</a></span></dt><dt><span class="section"><a href="testing.html#testcontext-ctx-management">9.3.5.2. Context management and caching</a></span></dt><dt><span class="section"><a href="testing.html#testcontext-fixture-di">9.3.5.3. Dependency Injection of test fixtures</a></span></dt><dt><span class="section"><a href="testing.html#testcontext-tx">9.3.5.4. Transaction management</a></span></dt><dt><span class="section"><a href="testing.html#testcontext-support-classes">9.3.5.5. TestContext support classes</a></span></dt></dl></dd><dt><span class="section"><a href="testing.html#testing-examples-petclinic">9.3.6. PetClinic example</a></span></dt></dl></dd><dt><span class="section"><a href="testing.html#testing-resources">9.4. Further Resources</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="spring-data-tier.html">IV. Data Access</a></span></dt><dd><dl><dt><span class="chapter"><a href="transaction.html">10. Transaction Management</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#transaction-intro">10.1. Introduction to Spring Framework transaction management</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-motivation">10.2. Advantages of the Spring Framework's transaction support model</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#d0e19176">10.2.1. Global transactions</a></span></dt><dt><span class="section"><a href="transaction.html#d0e19201">10.2.2. Local transactions</a></span></dt><dt><span class="section"><a href="transaction.html#d0e19206">10.2.3. Spring Framework's consistent programming model</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#transaction-strategies">10.3. Understanding the Spring Framework transaction abstraction</a></span></dt><dt><span class="section"><a href="transaction.html#tx-resource-synchronization">10.4. Synchronizing resources with transactions</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#tx-resource-synchronization-high">10.4.1. High-level synchronization approach</a></span></dt><dt><span class="section"><a href="transaction.html#tx-resource-synchronization-low">10.4.2. Low-level synchronization approach</a></span></dt><dt><span class="section"><a href="transaction.html#tx-resource-synchronization-tadsp">10.4.3. TransactionAwareDataSourceProxy</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#transaction-declarative">10.5. Declarative transaction management</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#tx-decl-explained">10.5.1. Understanding the Spring Framework's declarative transaction
      implementation</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-declarative-first-example">10.5.2. Example of declarative transaction implementation</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-declarative-rolling-back">10.5.3. Rolling back a declarative transaction</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-declarative-diff-tx">10.5.4. Configuring different transactional semantics for different
      beans</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-declarative-txadvice-settings">10.5.5. &lt;tx:advice/&gt; settings</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-declarative-annotations">10.5.6. Using @Transactional</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#transaction-declarative-attransactional-settings">10.5.6.1. @Transactional settings</a></span></dt><dt><span class="section"><a href="transaction.html#tx-multiple-tx-mgrs-with-attransactional">10.5.6.2. Multiple Transaction Managers with @Transactional</a></span></dt><dt><span class="section"><a href="transaction.html#tx-custom-attributes">10.5.6.3. Custom shortcut annotations</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#tx-propagation">10.5.7. Transaction propagation</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#tx-propagation-required">10.5.7.1. Required</a></span></dt><dt><span class="section"><a href="transaction.html#tx-propagation-requires_new">10.5.7.2. RequiresNew</a></span></dt><dt><span class="section"><a href="transaction.html#tx-propagation-nested">10.5.7.3. Nested</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#transaction-declarative-applying-more-than-just-tx-advice">10.5.8. Advising transactional operations</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-declarative-aspectj">10.5.9. Using @Transactional with
      AspectJ</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#transaction-programmatic">10.6. Programmatic transaction management</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#tx-prog-template">10.6.1. Using the TransactionTemplate</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#tx-prog-template-settings">10.6.1.1. Specifying transaction settings</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#transaction-programmatic-ptm">10.6.2. Using the
      PlatformTransactionManager</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#tx-decl-vs-prog">10.7. Choosing between programmatic and declarative transaction
    management</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-application-server-integration">10.8. Application server-specific integration</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#transaction-application-server-integration-websphere">10.8.1. IBM WebSphere</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-application-server-integration-weblogic">10.8.2. BEA WebLogic Server</a></span></dt><dt><span class="section"><a href="transaction.html#transaction-application-server-integration-oc4j">10.8.3. Oracle OC4J</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#transaction-solutions-to-common-problems">10.9. Solutions to common problems</a></span></dt><dd><dl><dt><span class="section"><a href="transaction.html#transaction-solutions-to-common-problems-wrong-ptm">10.9.1. Use of the wrong transaction manager for a specific
      DataSource</a></span></dt></dl></dd><dt><span class="section"><a href="transaction.html#transaction-resources">10.10. Further Resources</a></span></dt></dl></dd><dt><span class="chapter"><a href="dao.html">11. DAO support</a></span></dt><dd><dl><dt><span class="section"><a href="dao.html#dao-introduction">11.1. Introduction</a></span></dt><dt><span class="section"><a href="dao.html#dao-exceptions">11.2. Consistent exception hierarchy</a></span></dt><dt><span class="section"><a href="dao.html#dao-annotations">11.3. Annotations used for configuring DAO or Repository classes</a></span></dt></dl></dd><dt><span class="chapter"><a href="jdbc.html">12. Data access with JDBC</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-introduction">12.1. Introduction to Spring Framework JDBC</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-choose-style">12.1.1. Choosing an approach for JDBC database access</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-packages">12.1.2. Package hierarchy</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-core">12.2. Using the JDBC core classes to control basic JDBC processing and
    error handling</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-JdbcTemplate">12.2.1. JdbcTemplate</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-JdbcTemplate-examples">12.2.1.1. Examples of JdbcTemplate class usage</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-JdbcTemplate-idioms">12.2.1.2. JdbcTemplate best practices</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-NamedParameterJdbcTemplate">12.2.2. NamedParameterJdbcTemplate</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-SimpleJdbcTemplate">12.2.3. SimpleJdbcTemplate</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-SQLExceptionTranslator">12.2.4. SQLExceptionTranslator</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-statements-executing">12.2.5. Executing statements</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-statements-querying">12.2.6. Running queries</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-updates">12.2.7. Updating the database</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-auto-genereted-keys">12.2.8. Retrieving auto-generated keys</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-connections">12.3. Controlling database connections</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-datasource">12.3.1. DataSource</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-DataSourceUtils">12.3.2. DataSourceUtils</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-SmartDataSource">12.3.3. SmartDataSource</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-AbstractDataSource">12.3.4. AbstractDataSource</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-SingleConnectionDataSource">12.3.5. SingleConnectionDataSource</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-DriverManagerDataSource">12.3.6. DriverManagerDataSource</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-TransactionAwareDataSourceProxy">12.3.7. TransactionAwareDataSourceProxy</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-DataSourceTransactionManager">12.3.8. DataSourceTransactionManager</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-NativeJdbcExtractor">12.3.9. NativeJdbcExtractor</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-advanced-jdbc">12.4. JDBC batch operations</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-advanced-classic">12.4.1. Batch operations with the JdbcTemplate</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-advanced-simple">12.4.2. Batch operations with the SimpleJdbcTemplate</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc">12.5. Simplifying JDBC operations with the SimpleJdbc classes</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-insert-1">12.5.1. Inserting data using SimpleJdbcInsert</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-insert-2">12.5.2. Retrieving auto-generated keys using SimpleJdbcInsert</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-insert-3">12.5.3. Specifying columns for a SimpleJdbcInsert</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-parameters">12.5.4. Using SqlParameterSource to provide parameter values</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-call-1">12.5.5. Calling a stored procedure with SimpleJdbcCall</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-call-2">12.5.6. Explicitly declaring parameters to use for a
      SimpleJdbcCall</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-params">12.5.7. How to define SqlParameters</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-call-3">12.5.8. Calling a stored function using SimpleJdbcCall</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-simple-jdbc-call-4">12.5.9. Returning ResultSet/REF Cursor from a SimpleJdbcCall</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-object">12.6. Modeling JDBC operations as Java objects</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-SqlQuery">12.6.1. SqlQuery</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-MappingSqlQuery">12.6.2. MappingSqlQuery</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-SqlUpdate">12.6.3. SqlUpdate</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-StoredProcedure">12.6.4. StoredProcedure</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-parameter-handling">12.7. Common problems with parameter and data value handling</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-type-information">12.7.1. Providing SQL type information for parameters</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-lob">12.7.2. Handling BLOB and CLOB objects</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-in-clause">12.7.3. Passing in lists of values for IN clause</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-complex-types">12.7.4. Handling complex types for stored procedure calls</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-support">12.8. Embedded database support</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#jdbc-why-embedded-database">12.8.1. Why use an embedded database?</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-xml">12.8.2. Creating an embedded database instance using Spring XML</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-java">12.8.3. Creating an embedded database instance programmatically</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-extension">12.8.4. Extending the embedded database support</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-using-HSQL">12.8.5. Using HSQL</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-using-H2">12.8.6. Using H2</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-using-Derby">12.8.7. Using Derby</a></span></dt><dt><span class="section"><a href="jdbc.html#jdbc-embedded-database-dao-testing">12.8.8. Testing data access logic with an embedded database</a></span></dt></dl></dd><dt><span class="section"><a href="jdbc.html#d0e24249">12.9. Initializing a DataSource</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#d0e24263">12.9.1. Initializing a database instance using Spring XML</a></span></dt><dd><dl><dt><span class="section"><a href="jdbc.html#d0e24327">12.9.1.1. Initialization of Other Components that Depend on the
        Database</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="orm.html">13. Object Relational Mapping (ORM) Data Access</a></span></dt><dd><dl><dt><span class="section"><a href="orm.html#orm-introduction">13.1. Introduction to ORM with Spring</a></span></dt><dt><span class="section"><a href="orm.html#orm-general">13.2. General ORM integration considerations</a></span></dt><dd><dl><dt><span class="section"><a href="orm.html#orm-resource-mngmnt">13.2.1. Resource and transaction management</a></span></dt><dt><span class="section"><a href="orm.html#orm-exception-translation">13.2.2. Exception translation</a></span></dt></dl></dd><dt><span class="section"><a href="orm.html#orm-hibernate">13.3. Hibernate</a></span></dt><dd><dl><dt><span class="section"><a href="orm.html#orm-session-factory-setup">13.3.1. SessionFactory setup in a Spring
      container</a></span></dt><dt><span class="section"><a href="orm.html#orm-hibernate-straight">13.3.2. Implementing DAOs based on plain Hibernate 3 API</a></span></dt><dt><span class="section"><a href="orm.html#orm-hibernate-tx-declarative">13.3.3. Declarative transaction demarcation</a></span></dt><dt><span class="section"><a href="orm.html#orm-hibernate-tx-programmatic">13.3.4. Programmatic transaction demarcation</a></span></dt><dt><span class="section"><a href="orm.html#orm-hibernate-tx-strategies">13.3.5. Transaction management strategies</a></span></dt><dt><span class="section"><a href="orm.html#orm-hibernate-resources">13.3.6. Comparing container-managed and locally defined resources</a></span></dt><dt><span class="section"><a href="orm.html#orm-hibernate-invalid-jdbc-access-error">13.3.7. Spurious application server warnings with Hibernate</a></span></dt></dl></dd><dt><span class="section"><a href="orm.html#orm-jdo">13.4. JDO</a></span></dt><dd><dl><dt><span class="section"><a href="orm.html#orm-jdo-setup">13.4.1. PersistenceManagerFactory
      setup</a></span></dt><dt><span class="section"><a href="orm.html#orm-jdo-daos-straight">13.4.2. Implementing DAOs based on the plain JDO API</a></span></dt><dt><span class="section"><a href="orm.html#orm-jdo-tx">13.4.3. Transaction management</a></span></dt><dt><span class="section"><a href="orm.html#orm-jdo-dialect">13.4.4. JdoDialect</a></span></dt></dl></dd><dt><span class="section"><a href="orm.html#orm-jpa">13.5. JPA</a></span></dt><dd><dl><dt><span class="section"><a href="orm.html#orm-jpa-setup">13.5.1. Three options for JPA setup in a Spring environment</a></span></dt><dd><dl><dt><span class="section"><a href="orm.html#orm-jpa-setup-lemfb">13.5.1.1. LocalEntityManagerFactoryBean</a></span></dt><dt><span class="section"><a href="orm.html#orm-jpa-setup-jndi">13.5.1.2. Obtaining an EntityManagerFactory from
        JNDI</a></span></dt><dt><span class="section"><a href="orm.html#orm-jpa-setup-lcemfb">13.5.1.3. LocalContainerEntityManagerFactoryBean</a></span></dt><dt><span class="section"><a href="orm.html#orm-jpa-multiple-pu">13.5.1.4. Dealing with multiple persistence units</a></span></dt></dl></dd><dt><span class="section"><a href="orm.html#orm-jpa-straight">13.5.2. Implementing DAOs based on plain JPA</a></span></dt><dt><span class="section"><a href="orm.html#orm-jpa-tx">13.5.3. Transaction Management</a></span></dt><dt><span class="section"><a href="orm.html#orm-jpa-dialect">13.5.4. JpaDialect</a></span></dt></dl></dd><dt><span class="section"><a href="orm.html#orm-ibatis">13.6. iBATIS SQL Maps</a></span></dt><dd><dl><dt><span class="section"><a href="orm.html#orm-ibatis-setup">13.6.1. Setting up the SqlMapClient</a></span></dt><dt><span class="section"><a href="orm.html#orm-ibatis-template">13.6.2. Using SqlMapClientTemplate and
      SqlMapClientDaoSupport</a></span></dt><dt><span class="section"><a href="orm.html#orm-ibatis-straight">13.6.3. Implementing DAOs based on plain iBATIS API</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="oxm.html">14. Marshalling XML using O/X Mappers</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#oxm-introduction">14.1. Introduction</a></span></dt><dt><span class="section"><a href="oxm.html#oxm-marshaller-unmarshaller">14.2. Marshaller and Unmarshaller</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#d0e26096">14.2.1. Marshaller</a></span></dt><dt><span class="section"><a href="oxm.html#d0e26164">14.2.2. Unmarshaller</a></span></dt><dt><span class="section"><a href="oxm.html#d0e26238">14.2.3. XmlMappingException</a></span></dt></dl></dd><dt><span class="section"><a href="oxm.html#oxm-usage">14.3. Using Marshaller and Unmarshaller</a></span></dt><dt><span class="section"><a href="oxm.html#d0e26329">14.4. XML Schema-based Configuration</a></span></dt><dt><span class="section"><a href="oxm.html#oxm-jaxb">14.5. JAXB</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#oxm-jaxb2">14.5.1. Jaxb2Marshaller</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#oxm-jaxb2-xsd">14.5.1.1. XML Schema-based Configuration</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="oxm.html#oxm-castor">14.6. Castor</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#d0e26476">14.6.1. CastorMarshaller</a></span></dt><dt><span class="section"><a href="oxm.html#d0e26492">14.6.2. Mapping</a></span></dt></dl></dd><dt><span class="section"><a href="oxm.html#oxm-xmlbeans">14.7. XMLBeans</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#d0e26525">14.7.1. XmlBeansMarshaller</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#oxm-xmlbeans-xsd">14.7.1.1. XML Schema-based Configuration</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="oxm.html#oxm-jibx">14.8. JiBX</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#d0e26617">14.8.1. JibxMarshaller</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#oxm-jibx-xsd">14.8.1.1. XML Schema-based Configuration</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="oxm.html#oxm-xstream">14.9. XStream</a></span></dt><dd><dl><dt><span class="section"><a href="oxm.html#d0e26722">14.9.1. XStreamMarshaller</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="spring-web.html">V. The Web</a></span></dt><dd><dl><dt><span class="chapter"><a href="mvc.html">15. Web MVC framework</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-introduction">15.1. Introduction to Spring Web MVC framework</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-features">15.1.1. Features of Spring Web MVC</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-introduction-pluggability">15.1.2. Pluggability of other MVC implementations</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-servlet">15.2. The DispatcherServlet</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-controller">15.3. Implementing Controllers</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-ann-controller">15.3.1. Defining a controller with
      @Controller</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-requestmapping">15.3.2. Mapping requests with
      @RequestMapping</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-ann-requestmapping-uri-templates">15.3.2.1. URI Templates</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-requestmapping-advanced">15.3.2.2. Advanced @RequestMapping
        options</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-requestmapping-arguments">15.3.2.3. Supported handler method arguments and return types</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-requestparam">15.3.2.4. Binding request parameters to method parameters with
        @RequestParam</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-requestbody">15.3.2.5. Mapping the request body with the @RequestBody
        annotation</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-responsebody">15.3.2.6. Mapping the response body with the @ResponseBody
        annotation</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-httpentity">15.3.2.7. Using HttpEntity&lt;?&gt;</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-modelattrib">15.3.2.8. Providing a link to data from the model with
        @ModelAttribute</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-sessionattrib">15.3.2.9. Specifying attributes to store in a session with
        @SessionAttributes</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-cookievalue">15.3.2.10. Mapping cookie values with the @CookieValue annotation</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-requestheader">15.3.2.11. Mapping request header attributes with the @RequestHeader
        annotation</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-webdatabinder">15.3.2.12. Customizing WebDataBinder
        initialization</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="mvc.html#mvc-handlermapping">15.4. Handler mappings</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-handlermapping-interceptor">15.4.1. Intercepting requests - the
      HandlerInterceptor interface</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-viewresolver">15.5. Resolving views</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-viewresolver-resolver">15.5.1. Resolving views with the
      ViewResolver interface</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-viewresolver-chaining">15.5.2. Chaining ViewResolvers</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-redirecting">15.5.3. Redirecting to views</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-redirecting-redirect-view">15.5.3.1. RedirectView</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-redirecting-redirect-prefix">15.5.3.2. The redirect: prefix</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-redirecting-forward-prefix">15.5.3.3. The forward: prefix</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-multiple-representations">15.5.4. ContentNegotiatingViewResolver</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-localeresolver">15.6. Using locales</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-localeresolver-acceptheader">15.6.1. AcceptHeaderLocaleResolver</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-localeresolver-cookie">15.6.2. CookieLocaleResolver</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-localeresolver-session">15.6.3. SessionLocaleResolver</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-localeresolver-interceptor">15.6.4. LocaleChangeInterceptor</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-themeresolver">15.7. Using themes</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-themeresolver-introduction">15.7.1. Overview of themes</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-themeresolver-defining">15.7.2. Defining themes</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-themeresolver-resolving">15.7.3. Theme resolvers</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-multipart">15.8. Spring's multipart (fileupload) support</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-multipart-introduction">15.8.1. Introduction</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-multipart-resolver">15.8.2. Using the
      MultipartResolver</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-multipart-forms">15.8.3. Handling a file upload in a form</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-exceptionhandlers">15.9. Handling exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#d0e29676">15.9.1. HandlerExceptionResolver</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-ann-exceptionhandler">15.9.2. @ExceptionHandler</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-coc">15.10. Convention over configuration support</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-coc-ccnhm">15.10.1. The Controller
      ControllerClassNameHandlerMapping</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-coc-modelmap">15.10.2. The Model ModelMap
      (ModelAndView)</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-coc-r2vnt">15.10.3. The View -
      RequestToViewNameTranslator</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-etag">15.11. ETag support</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-config">15.12. Configuring Spring MVC</a></span></dt><dd><dl><dt><span class="section"><a href="mvc.html#mvc-annotation-driven">15.12.1. mvc:annotation-driven</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-interceptors">15.12.2. mvc:interceptors</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-view-controller">15.12.3. mvc:view-controller</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-static-resources">15.12.4. mvc:resources</a></span></dt><dt><span class="section"><a href="mvc.html#mvc-default-servlet-handler">15.12.5. mvc:default-servlet-handler</a></span></dt></dl></dd><dt><span class="section"><a href="mvc.html#mvc-resources">15.13. More Spring Web MVC Resources</a></span></dt></dl></dd><dt><span class="chapter"><a href="view.html">16. View technologies</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-introduction">16.1. Introduction</a></span></dt><dt><span class="section"><a href="view.html#view-jsp">16.2. JSP &amp; JSTL</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-jsp-resolver">16.2.1. View resolvers</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-jstl">16.2.2. 'Plain-old' JSPs versus JSTL</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-tags">16.2.3. Additional tags facilitating development</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib">16.2.4. Using Spring's form tag library</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-jsp-formtaglib-configuration">16.2.4.1. Configuration</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-formtag">16.2.4.2. The form tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-inputtag">16.2.4.3. The input tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-checkboxtag">16.2.4.4. The checkbox tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-checkboxestag">16.2.4.5. The checkboxes tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-radiobuttontag">16.2.4.6. The radiobutton tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-radiobuttonstag">16.2.4.7. The radiobuttons tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-passwordtag">16.2.4.8. The password tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-selecttag">16.2.4.9. The select tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-optiontag">16.2.4.10. The option tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-optionstag">16.2.4.11. The options tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-textAreatag">16.2.4.12. The textarea tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-hiddeninputtag">16.2.4.13. The hidden tag</a></span></dt><dt><span class="section"><a href="view.html#view-jsp-formtaglib-errorstag">16.2.4.14. The errors tag</a></span></dt><dt><span class="section"><a href="view.html#rest-method-conversion">16.2.4.15. HTTP Method Conversion</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="view.html#view-tiles">16.3. Tiles</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-tiles-dependencies">16.3.1. Dependencies</a></span></dt><dt><span class="section"><a href="view.html#view-tiles-integrate">16.3.2. How to integrate Tiles</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-tiles-url">16.3.2.1. 
          UrlBasedViewResolver
        </a></span></dt><dt><span class="section"><a href="view.html#view-tiles-resource">16.3.2.2. 
          ResourceBundleViewResolver
        </a></span></dt><dt><span class="section"><a href="view.html#view-tiles-preparer">16.3.2.3. SimpleSpringPreparerFactory and
        SpringBeanPreparerFactory</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="view.html#view-velocity">16.4. Velocity &amp; FreeMarker</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-velocity-dependencies">16.4.1. Dependencies</a></span></dt><dt><span class="section"><a href="view.html#view-velocity-contextconfig">16.4.2. Context configuration</a></span></dt><dt><span class="section"><a href="view.html#view-velocity-createtemplates">16.4.3. Creating templates</a></span></dt><dt><span class="section"><a href="view.html#view-velocity-advancedconfig">16.4.4. Advanced configuration</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-velocity-example-velocityproperties">16.4.4.1. velocity.properties</a></span></dt><dt><span class="section"><a href="view.html#views-freemarker">16.4.4.2. FreeMarker</a></span></dt></dl></dd><dt><span class="section"><a href="view.html#view-velocity-forms">16.4.5. Bind support and form handling</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-bind-macros">16.4.5.1. The bind macros</a></span></dt><dt><span class="section"><a href="view.html#view-simple-binding">16.4.5.2. Simple binding</a></span></dt><dt><span class="section"><a href="view.html#views-form-macros">16.4.5.3. Form input generation macros</a></span></dt><dt><span class="section"><a href="view.html#views-form-macros-html-escaping">16.4.5.4. HTML escaping and XHTML compliance</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="view.html#view-xslt">16.5. XSLT</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-xslt-firstwords">16.5.1. My First Words</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-xslt-beandefs">16.5.1.1. Bean definitions</a></span></dt><dt><span class="section"><a href="view.html#view-xslt-controllercode">16.5.1.2. Standard MVC controller code</a></span></dt><dt><span class="section"><a href="view.html#view-xslt-subclassing">16.5.1.3. Convert the model data to XML</a></span></dt><dt><span class="section"><a href="view.html#view-xslt-viewdefinitions">16.5.1.4. Defining the view properties</a></span></dt><dt><span class="section"><a href="view.html#view-xslt-transforming">16.5.1.5. Document transformation</a></span></dt></dl></dd><dt><span class="section"><a href="view.html#view-xslt-summary">16.5.2. Summary</a></span></dt></dl></dd><dt><span class="section"><a href="view.html#view-document">16.6. Document views (PDF/Excel)</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-document-intro">16.6.1. Introduction</a></span></dt><dt><span class="section"><a href="view.html#view-document-config">16.6.2. Configuration and setup</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-document-configviews">16.6.2.1. Document view definitions</a></span></dt><dt><span class="section"><a href="view.html#view-document-configcontroller">16.6.2.2. Controller code</a></span></dt><dt><span class="section"><a href="view.html#view-document-configsubclasses">16.6.2.3. Subclassing for Excel views</a></span></dt><dt><span class="section"><a href="view.html#view-document-configsubclasspdf">16.6.2.4. Subclassing for PDF views</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="view.html#view-jasper-reports">16.7. JasperReports</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-jasper-reports-dependencies">16.7.1. Dependencies</a></span></dt><dt><span class="section"><a href="view.html#view-jasper-reports-configuration">16.7.2. Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-jasper-reports-configuration-resolver">16.7.2.1. Configuring the
        ViewResolver</a></span></dt><dt><span class="section"><a href="view.html#view-jasper-reports-configuration-views">16.7.2.2. Configuring the Views</a></span></dt><dt><span class="section"><a href="view.html#view-jasper-reports-configuration-report-files">16.7.2.3. About Report Files</a></span></dt><dt><span class="section"><a href="view.html#view-jasper-reports-configuration-multiformat-view">16.7.2.4. Using
        JasperReportsMultiFormatView</a></span></dt></dl></dd><dt><span class="section"><a href="view.html#view-jasper-reports-model">16.7.3. Populating the ModelAndView</a></span></dt><dt><span class="section"><a href="view.html#view-jasper-reports-subreports">16.7.4. Working with Sub-Reports</a></span></dt><dd><dl><dt><span class="section"><a href="view.html#view-jasper-reports-subreports-config-reports">16.7.4.1. Configuring Sub-Report Files</a></span></dt><dt><span class="section"><a href="view.html#view-jasper-reports-subreports-config-datasources">16.7.4.2. Configuring Sub-Report Data Sources</a></span></dt></dl></dd><dt><span class="section"><a href="view.html#view-jasper-reports-exporter-parameters">16.7.5. Configuring Exporter Parameters</a></span></dt></dl></dd><dt><span class="section"><a href="view.html#view-feeds">16.8. Feed Views</a></span></dt><dt><span class="section"><a href="view.html#view-xml-marshalling">16.9. XML Marshalling View</a></span></dt><dt><span class="section"><a href="view.html#view-json-mapping">16.10. JSON Mapping View</a></span></dt></dl></dd><dt><span class="chapter"><a href="web-integration.html">17. Integrating with other web frameworks</a></span></dt><dd><dl><dt><span class="section"><a href="web-integration.html#intro">17.1. Introduction</a></span></dt><dt><span class="section"><a href="web-integration.html#web-integration-common">17.2. Common configuration</a></span></dt><dt><span class="section"><a href="web-integration.html#jsf">17.3. JavaServer Faces 1.1 and 1.2</a></span></dt><dd><dl><dt><span class="section"><a href="web-integration.html#jsf-delegatingvariableresolver">17.3.1. DelegatingVariableResolver (JSF 1.1/1.2)</a></span></dt><dt><span class="section"><a href="web-integration.html#jsf-springbeanvariableresolver">17.3.2. SpringBeanVariableResolver (JSF 1.1/1.2)</a></span></dt><dt><span class="section"><a href="web-integration.html#jsf-springbeanfaceselresolver">17.3.3. SpringBeanFacesELResolver (JSF 1.2+)</a></span></dt><dt><span class="section"><a href="web-integration.html#jsf-facescontextutils">17.3.4. FacesContextUtils</a></span></dt></dl></dd><dt><span class="section"><a href="web-integration.html#struts">17.4. Apache Struts 1.x and 2.x</a></span></dt><dd><dl><dt><span class="section"><a href="web-integration.html#struts-contextloaderplugin">17.4.1. ContextLoaderPlugin</a></span></dt><dd><dl><dt><span class="section"><a href="web-integration.html#struts-delegatingrequestprocessor">17.4.1.1. DelegatingRequestProcessor</a></span></dt><dt><span class="section"><a href="web-integration.html#struts-delegatingactionproxy">17.4.1.2. DelegatingActionProxy</a></span></dt></dl></dd><dt><span class="section"><a href="web-integration.html#struts-actionsupport">17.4.2. ActionSupport Classes</a></span></dt></dl></dd><dt><span class="section"><a href="web-integration.html#webwork">17.5. WebWork 2.x</a></span></dt><dt><span class="section"><a href="web-integration.html#tapestry">17.6. Tapestry 3.x and 4.x</a></span></dt><dd><dl><dt><span class="section"><a href="web-integration.html#tapestry-di">17.6.1. Injecting Spring-managed beans</a></span></dt><dd><dl><dt><span class="section"><a href="web-integration.html#tapestry-pre4-style-di">17.6.1.1. Dependency Injecting Spring Beans into Tapestry pages</a></span></dt><dt><span class="section"><a href="web-integration.html#tapestry-componentdefs">17.6.1.2. Component definition files</a></span></dt><dt><span class="section"><a href="web-integration.html#tapestry-getters">17.6.1.3. Adding abstract accessors</a></span></dt><dt><span class="section"><a href="web-integration.html#tapestry-4-style-di">17.6.1.4. Dependency Injecting Spring Beans into Tapestry pages -
        Tapestry 4.x style</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="web-integration.html#web-integration-resources">17.7. Further Resources</a></span></dt></dl></dd><dt><span class="chapter"><a href="portlet.html">18. Portlet MVC Framework</a></span></dt><dd><dl><dt><span class="section"><a href="portlet.html#portlet-introduction">18.1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="portlet.html#portlet-introduction-controller">18.1.1. Controllers - The C in MVC</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-introduction-view">18.1.2. Views - The V in MVC</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-introduction-scope">18.1.3. Web-scoped beans</a></span></dt></dl></dd><dt><span class="section"><a href="portlet.html#portlet-dispatcher">18.2. The DispatcherPortlet</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-viewservlet">18.3. The ViewRendererServlet</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-controller">18.4. Controllers</a></span></dt><dd><dl><dt><span class="section"><a href="portlet.html#portlet-controller-abstractcontroller">18.4.1. AbstractController and PortletContentGenerator</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-controller-simple">18.4.2. Other simple controllers</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-controller-command">18.4.3. Command Controllers</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-controller-wrapping">18.4.4. PortletWrappingController</a></span></dt></dl></dd><dt><span class="section"><a href="portlet.html#portlet-handlermapping">18.5. Handler mappings</a></span></dt><dd><dl><dt><span class="section"><a href="portlet.html#portlet-handlermapping-portletmode">18.5.1. PortletModeHandlerMapping</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-handlermapping-parameter">18.5.2. ParameterHandlerMapping</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-handlermapping-portletmodeparameter">18.5.3. PortletModeParameterHandlerMapping</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-handlermapping-interceptor">18.5.4. Adding HandlerInterceptors</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-handlermapping-interceptoradapter">18.5.5. HandlerInterceptorAdapter</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-handlermapping-parameterinterceptor">18.5.6. ParameterMappingInterceptor</a></span></dt></dl></dd><dt><span class="section"><a href="portlet.html#portlet-viewresolver">18.6. Views and resolving them</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-multipart">18.7. Multipart (file upload) support</a></span></dt><dd><dl><dt><span class="section"><a href="portlet.html#portlet-multipart-resolver">18.7.1. Using the PortletMultipartResolver</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-multipart-forms">18.7.2. Handling a file upload in a form</a></span></dt></dl></dd><dt><span class="section"><a href="portlet.html#portlet-exceptionresolver">18.8. Handling exceptions</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-annotation">18.9. Annotation-based controller configuration</a></span></dt><dd><dl><dt><span class="section"><a href="portlet.html#portlet-ann-setup">18.9.1. Setting up the dispatcher for annotation support</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-controller">18.9.2. Defining a controller with
      @Controller</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-requestmapping">18.9.3. Mapping requests with
      @RequestMapping</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-requestmapping-arguments">18.9.4. Supported handler method arguments</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-requestparam">18.9.5. Binding request parameters to method parameters with
      @RequestParam</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-modelattrib">18.9.6. Providing a link to data from the model with
      @ModelAttribute</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-sessionattrib">18.9.7. Specifying attributes to store in a Session with
      @SessionAttributes</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-webdatabinder">18.9.8. Customizing WebDataBinder
      initialization</a></span></dt><dd><dl><dt><span class="section"><a href="portlet.html#portlet-ann-initbinder">18.9.8.1. Customizing data binding with
        @InitBinder</a></span></dt><dt><span class="section"><a href="portlet.html#portlet-ann-webbindinginitializer">18.9.8.2. Configuring a custom
        WebBindingInitializer</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="portlet.html#portlet-deployment">18.10. Portlet application deployment</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="spring-integration.html">VI. Integration</a></span></dt><dd><dl><dt><span class="chapter"><a href="remoting.html">19. Remoting and web services using Spring</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#remoting-introduction">19.1. Introduction</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-rmi">19.2. Exposing services using RMI</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#remoting-rmi-server">19.2.1. Exporting the service using the
      RmiServiceExporter</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-rmi-client">19.2.2. Linking in the service at the client</a></span></dt></dl></dd><dt><span class="section"><a href="remoting.html#remoting-caucho-protocols">19.3. Using Hessian or Burlap to remotely call services via HTTP</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#remoting-caucho-protocols-hessian">19.3.1. Wiring up the DispatcherServlet for
      Hessian and co.</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-caucho-protocols-hessian-server">19.3.2. Exposing your beans by using the
      HessianServiceExporter</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-caucho-protocols-hessian-client">19.3.3. Linking in the service on the client</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-caucho-protocols-burlap">19.3.4. Using Burlap</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-caucho-protocols-security">19.3.5. Applying HTTP basic authentication to a service exposed through
      Hessian or Burlap</a></span></dt></dl></dd><dt><span class="section"><a href="remoting.html#remoting-httpinvoker">19.4. Exposing services using HTTP invokers</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#remoting-httpinvoker-server">19.4.1. Exposing the service object</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-httpinvoker-client">19.4.2. Linking in the service at the client</a></span></dt></dl></dd><dt><span class="section"><a href="remoting.html#remoting-web-services">19.5. Web services</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxrpc-export">19.5.1. Exposing servlet-based web services using JAX-RPC</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxrpc-access">19.5.2. Accessing web services using JAX-RPC</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxrpc-mapping-registration">19.5.3. Registering JAX-RPC Bean Mappings</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxrpc-handler-registration">19.5.4. Registering your own JAX-RPC Handler</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxws-export-servlet">19.5.5. Exposing servlet-based web services using JAX-WS</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxws-export-standalone">19.5.6. Exporting standalone web services using JAX-WS</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxws-export-ri">19.5.7. Exporting web services using the JAX-WS RI's Spring
      support</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-web-services-jaxws-access">19.5.8. Accessing web services using JAX-WS</a></span></dt></dl></dd><dt><span class="section"><a href="remoting.html#remoting-jms">19.6. JMS</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#remoting-jms-server">19.6.1. Server-side configuration</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-jms-client">19.6.2. Client-side configuration</a></span></dt></dl></dd><dt><span class="section"><a href="remoting.html#remoting-autodection-remote-interfaces">19.7. Auto-detection is not implemented for remote interfaces</a></span></dt><dt><span class="section"><a href="remoting.html#remoting-considerations">19.8. Considerations when choosing a technology</a></span></dt><dt><span class="section"><a href="remoting.html#rest-client-access">19.9. Accessing RESTful services on the Client</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#rest-resttemplate">19.9.1. RestTemplate</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#d0e36293">19.9.1.1. Dealing with request and response headers</a></span></dt></dl></dd><dt><span class="section"><a href="remoting.html#rest-message-conversion">19.9.2. HTTP Message Conversion</a></span></dt><dd><dl><dt><span class="section"><a href="remoting.html#rest-string-converter">19.9.2.1. StringHttpMessageConverter</a></span></dt><dt><span class="section"><a href="remoting.html#rest-form-converter">19.9.2.2. FormHttpMessageConverter</a></span></dt><dt><span class="section"><a href="remoting.html#rest-byte-converter">19.9.2.3. ByteArrayMessageConverter</a></span></dt><dt><span class="section"><a href="remoting.html#rest-marhsalling-converter">19.9.2.4. MarshallingHttpMessageConverter</a></span></dt><dt><span class="section"><a href="remoting.html#rest-mapping-json-converter">19.9.2.5. MappingJacksonHttpMessageConverter</a></span></dt><dt><span class="section"><a href="remoting.html#rest-source-converter">19.9.2.6. SourceHttpMessageConverter</a></span></dt><dt><span class="section"><a href="remoting.html#rest-buffered-image-converter">19.9.2.7. BufferedImageHttpMessageConverter</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="ejb.html">20. Enterprise JavaBeans (EJB) integration</a></span></dt><dd><dl><dt><span class="section"><a href="ejb.html#ejb-introduction">20.1. Introduction</a></span></dt><dt><span class="section"><a href="ejb.html#ejb-access">20.2. Accessing EJBs</a></span></dt><dd><dl><dt><span class="section"><a href="ejb.html#ejb-access-concepts">20.2.1. Concepts</a></span></dt><dt><span class="section"><a href="ejb.html#ejb-access-local">20.2.2. Accessing local SLSBs</a></span></dt><dt><span class="section"><a href="ejb.html#ejb-access-remote">20.2.3. Accessing remote SLSBs</a></span></dt><dt><span class="section"><a href="ejb.html#ejb-access-ejb2-ejb3">20.2.4. Accessing EJB 2.x SLSBs versus EJB 3 SLSBs</a></span></dt></dl></dd><dt><span class="section"><a href="ejb.html#ejb-implementation">20.3. Using Spring's EJB implementation support classes</a></span></dt><dd><dl><dt><span class="section"><a href="ejb.html#ejb-implementation-ejb2">20.3.1. EJB 2.x base classes</a></span></dt><dt><span class="section"><a href="ejb.html#ejb-implementation-ejb3">20.3.2. EJB 3 injection interceptor</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="jms.html">21. JMS (Java Message Service)</a></span></dt><dd><dl><dt><span class="section"><a href="jms.html#jms-introduction">21.1. Introduction</a></span></dt><dt><span class="section"><a href="jms.html#jms-using">21.2. Using Spring JMS</a></span></dt><dd><dl><dt><span class="section"><a href="jms.html#jms-jmstemplate">21.2.1. JmsTemplate</a></span></dt><dt><span class="section"><a href="jms.html#jms-connections">21.2.2. Connections</a></span></dt><dd><dl><dt><span class="section"><a href="jms.html#d0e37023">21.2.2.1. Caching Messaging Resources</a></span></dt><dt><span class="section"><a href="jms.html#d0e37032">21.2.2.2. SingleConnectionFactory</a></span></dt><dt><span class="section"><a href="jms.html#d0e37061">21.2.2.3. CachingConnectionFactory</a></span></dt></dl></dd><dt><span class="section"><a href="jms.html#jms-destinations">21.2.3. Destination Management</a></span></dt><dt><span class="section"><a href="jms.html#jms-mdp">21.2.4. Message Listener Containers</a></span></dt><dd><dl><dt><span class="section"><a href="jms.html#jms-mdp-simple">21.2.4.1. SimpleMessageListenerContainer</a></span></dt><dt><span class="section"><a href="jms.html#jms-mdp-default">21.2.4.2. DefaultMessageListenerContainer</a></span></dt></dl></dd><dt><span class="section"><a href="jms.html#jms-tx">21.2.5. Transaction management</a></span></dt></dl></dd><dt><span class="section"><a href="jms.html#jms-sending">21.3. Sending a Message</a></span></dt><dd><dl><dt><span class="section"><a href="jms.html#jms-msg-conversion">21.3.1. Using Message Converters</a></span></dt><dt><span class="section"><a href="jms.html#jms-callbacks">21.3.2. SessionCallback and
      ProducerCallback</a></span></dt></dl></dd><dt><span class="section"><a href="jms.html#jms-receiving">21.4. Receiving a message</a></span></dt><dd><dl><dt><span class="section"><a href="jms.html#jms-receiving-sync">21.4.1. Synchronous Reception</a></span></dt><dt><span class="section"><a href="jms.html#jms-asynchronousMessageReception">21.4.2. Asynchronous Reception - Message-Driven POJOs</a></span></dt><dt><span class="section"><a href="jms.html#jms-receiving-async-session-aware-message-listener">21.4.3. The SessionAwareMessageListener
      interface</a></span></dt><dt><span class="section"><a href="jms.html#jms-receiving-async-message-listener-adapter">21.4.4. The MessageListenerAdapter</a></span></dt><dt><span class="section"><a href="jms.html#jms-tx-participation">21.4.5. Processing messages within transactions</a></span></dt></dl></dd><dt><span class="section"><a href="jms.html#jms-jca-message-endpoint-manager">21.5. Support for JCA Message Endpoints</a></span></dt><dt><span class="section"><a href="jms.html#jms-namespace">21.6. JMS Namespace Support</a></span></dt></dl></dd><dt><span class="chapter"><a href="jmx.html">22. JMX</a></span></dt><dd><dl><dt><span class="section"><a href="jmx.html#jmx-introduction">22.1. Introduction</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-exporting">22.2. Exporting your beans to JMX</a></span></dt><dd><dl><dt><span class="section"><a href="jmx.html#jmx-exporting-mbeanserver">22.2.1. Creating an MBeanServer</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-mbean-server">22.2.2. Reusing an existing MBeanServer</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-exporting-lazy">22.2.3. Lazy-initialized MBeans</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-exporting-auto">22.2.4. Automatic registration of MBeans</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-exporting-registration-behavior">22.2.5. Controlling the registration behavior</a></span></dt></dl></dd><dt><span class="section"><a href="jmx.html#jmx-interface">22.3. Controlling the management interface of your beans</a></span></dt><dd><dl><dt><span class="section"><a href="jmx.html#jmx-interface-assembler">22.3.1. The MBeanInfoAssembler
      Interface</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-interface-metadata">22.3.2. Using Source-Level Metadata (JDK 5.0 annotations)</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-interface-metadata-types">22.3.3. Source-Level Metadata Types</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-interface-autodetect">22.3.4. The AutodetectCapableMBeanInfoAssembler
      interface</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-interface-java">22.3.5. Defining management interfaces using Java interfaces</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-interface-methodnames">22.3.6. Using
      MethodNameBasedMBeanInfoAssembler</a></span></dt></dl></dd><dt><span class="section"><a href="jmx.html#jmx-naming">22.4. Controlling the ObjectNames for your beans</a></span></dt><dd><dl><dt><span class="section"><a href="jmx.html#jmx-naming-properties">22.4.1. Reading ObjectNames from Properties</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-naming-metadata">22.4.2. Using the MetadataNamingStrategy</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-context-mbeanexport">22.4.3. The &lt;context:mbean-export/&gt; element</a></span></dt></dl></dd><dt><span class="section"><a href="jmx.html#jmx-jsr160">22.5. JSR-160 Connectors</a></span></dt><dd><dl><dt><span class="section"><a href="jmx.html#jmx-jsr160-server">22.5.1. Server-side Connectors</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-jsr160-client">22.5.2. Client-side Connectors</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-jsr160-protocols">22.5.3. JMX over Burlap/Hessian/SOAP</a></span></dt></dl></dd><dt><span class="section"><a href="jmx.html#jmx-proxy">22.6. Accessing MBeans via Proxies</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-notifications">22.7. Notifications</a></span></dt><dd><dl><dt><span class="section"><a href="jmx.html#jmx-notifications-listeners">22.7.1. Registering Listeners for Notifications</a></span></dt><dt><span class="section"><a href="jmx.html#jmx-notifications-publishing">22.7.2. Publishing Notifications</a></span></dt></dl></dd><dt><span class="section"><a href="jmx.html#jmx-resources">22.8. Further Resources</a></span></dt></dl></dd><dt><span class="chapter"><a href="cci.html">23. JCA CCI</a></span></dt><dd><dl><dt><span class="section"><a href="cci.html#cci-introduction">23.1. Introduction</a></span></dt><dt><span class="section"><a href="cci.html#cci-config">23.2. Configuring CCI</a></span></dt><dd><dl><dt><span class="section"><a href="cci.html#cci-config-connector">23.2.1. Connector configuration</a></span></dt><dt><span class="section"><a href="cci.html#cci-config-connectionfactory">23.2.2. ConnectionFactory configuration in
      Spring</a></span></dt><dt><span class="section"><a href="cci.html#cci-config-cci-connections">23.2.3. Configuring CCI connections</a></span></dt><dt><span class="section"><a href="cci.html#cci-config-single-connection">23.2.4. Using a single CCI connection</a></span></dt></dl></dd><dt><span class="section"><a href="cci.html#cci-using">23.3. Using Spring's CCI access support</a></span></dt><dd><dl><dt><span class="section"><a href="cci.html#cci-record-creator">23.3.1. Record conversion</a></span></dt><dt><span class="section"><a href="cci.html#cci-using-template">23.3.2. The CciTemplate</a></span></dt><dt><span class="section"><a href="cci.html#cci-using-dao">23.3.3. DAO support</a></span></dt><dt><span class="section"><a href="cci.html#automatic-output-generation">23.3.4. Automatic output record generation</a></span></dt><dt><span class="section"><a href="cci.html#template-summary">23.3.5. Summary</a></span></dt><dt><span class="section"><a href="cci.html#cci-straight">23.3.6. Using a CCI Connection and
      Interaction directly</a></span></dt><dt><span class="section"><a href="cci.html#cci-template-example">23.3.7. Example for CciTemplate usage</a></span></dt></dl></dd><dt><span class="section"><a href="cci.html#cci-object">23.4. Modeling CCI access as operation objects</a></span></dt><dd><dl><dt><span class="section"><a href="cci.html#cci-object-mapping-record">23.4.1. MappingRecordOperation</a></span></dt><dt><span class="section"><a href="cci.html#cci-object-mapping-comm-area">23.4.2. MappingCommAreaOperation</a></span></dt><dt><span class="section"><a href="cci.html#cci-automatic-record-gen">23.4.3. Automatic output record generation</a></span></dt><dt><span class="section"><a href="cci.html#cci-object-summary">23.4.4. Summary</a></span></dt><dt><span class="section"><a href="cci.html#cci-objects-mappring-record-example">23.4.5. Example for MappingRecordOperation
      usage</a></span></dt><dt><span class="section"><a href="cci.html#cci-objects-mapping-comm-area-example">23.4.6. Example for MappingCommAreaOperation
      usage</a></span></dt></dl></dd><dt><span class="section"><a href="cci.html#cci-tx">23.5. Transactions</a></span></dt></dl></dd><dt><span class="chapter"><a href="mail.html">24. Email</a></span></dt><dd><dl><dt><span class="section"><a href="mail.html#mail-introduction">24.1. Introduction</a></span></dt><dt><span class="section"><a href="mail.html#mail-usage">24.2. Usage</a></span></dt><dd><dl><dt><span class="section"><a href="mail.html#mail-usage-simple">24.2.1. Basic MailSender and SimpleMailMessage usage</a></span></dt><dt><span class="section"><a href="mail.html#mail-usage-mime">24.2.2. Using the JavaMailSender and the MimeMessagePreparator</a></span></dt></dl></dd><dt><span class="section"><a href="mail.html#mail-javamail-mime">24.3. Using the JavaMail MimeMessageHelper</a></span></dt><dd><dl><dt><span class="section"><a href="mail.html#mail-javamail-mime-attachments">24.3.1. Sending attachments and inline resources</a></span></dt><dd><dl><dt><span class="section"><a href="mail.html#mail-javamail-mime-attachments-attachment">24.3.1.1. Attachments</a></span></dt><dt><span class="section"><a href="mail.html#mail-javamail-mime-attachments-inline">24.3.1.2. Inline resources</a></span></dt></dl></dd><dt><span class="section"><a href="mail.html#mail-templates">24.3.2. Creating email content using a templating library</a></span></dt><dd><dl><dt><span class="section"><a href="mail.html#mail-templates-example">24.3.2.1. A Velocity-based example</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="scheduling.html">25. Task Execution and Scheduling</a></span></dt><dd><dl><dt><span class="section"><a href="scheduling.html#scheduling-introduction">25.1. Introduction</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-task-executor">25.2. The Spring TaskExecutor
    abstraction</a></span></dt><dd><dl><dt><span class="section"><a href="scheduling.html#scheduling-task-executor-types">25.2.1. TaskExecutor types</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-task-executor-usage">25.2.2. Using a TaskExecutor</a></span></dt></dl></dd><dt><span class="section"><a href="scheduling.html#scheduling-task-scheduler">25.3. The Spring TaskScheduler
    abstraction</a></span></dt><dd><dl><dt><span class="section"><a href="scheduling.html#scheduling-trigger-interface">25.3.1. The Trigger interface</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-trigger-implementations">25.3.2. Trigger implementations</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-task-scheduler-implementations">25.3.3. TaskScheduler
      implementations</a></span></dt></dl></dd><dt><span class="section"><a href="scheduling.html#scheduling-task-namespace">25.4. The Task Namespace</a></span></dt><dd><dl><dt><span class="section"><a href="scheduling.html#scheduling-task-namespace-scheduler">25.4.1. The 'scheduler' element</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-task-namespace-executor">25.4.2. The 'executor' element</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-task-namespace-scheduled-tasks">25.4.3. The 'scheduled-tasks' element</a></span></dt></dl></dd><dt><span class="section"><a href="scheduling.html#scheduling-annotation-support">25.5. Annotation Support for Scheduling and Asynchronous
    Execution</a></span></dt><dd><dl><dt><span class="section"><a href="scheduling.html#scheduling-annotation-support-scheduled">25.5.1. The @Scheduled Annotation</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-annotation-support-async">25.5.2. The @Async Annotation</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-annotation-support-namespace">25.5.3. The &lt;annotation-driven&gt; Element</a></span></dt></dl></dd><dt><span class="section"><a href="scheduling.html#scheduling-quartz">25.6. Using the OpenSymphony Quartz Scheduler</a></span></dt><dd><dl><dt><span class="section"><a href="scheduling.html#scheduling-quartz-jobdetail">25.6.1. Using the JobDetailBean</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-quartz-method-invoking-job">25.6.2. Using the
      MethodInvokingJobDetailFactoryBean</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-quartz-cron">25.6.3. Wiring up jobs using triggers and the
      SchedulerFactoryBean</a></span></dt></dl></dd><dt><span class="section"><a href="scheduling.html#scheduling-jdk-timer">25.7. Using JDK Timer support</a></span></dt><dd><dl><dt><span class="section"><a href="scheduling.html#scheduling-jdk-timer-creating">25.7.1. Creating custom timers</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-jdk-timer-method-invoking-task">25.7.2. Using the
      MethodInvokingTimerTaskFactoryBean</a></span></dt><dt><span class="section"><a href="scheduling.html#scheduling-jdk-timer-factory-bean">25.7.3. Wrapping up: setting up the tasks using the
      TimerFactoryBean</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="dynamic-language.html">26. Dynamic language support</a></span></dt><dd><dl><dt><span class="section"><a href="dynamic-language.html#dynamic-language-introduction">26.1. Introduction</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-a-first-example">26.2. A first example</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans">26.3. Defining beans that are backed by dynamic languages</a></span></dt><dd><dl><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-concepts">26.3.1. Common concepts</a></span></dt><dd><dl><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-concepts-xml-language-element">26.3.1.1. The &lt;lang:language/&gt; element</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-refreshable-beans">26.3.1.2. Refreshable beans</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-inline">26.3.1.3. Inline dynamic language source files</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-ctor-injection">26.3.1.4. Understanding Constructor Injection in the context of dynamic-language-backed beans</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-jruby">26.3.2. JRuby beans</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-groovy">26.3.3. Groovy beans</a></span></dt><dd><dl><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-groovy-customizer">26.3.3.1. Customising Groovy objects via a callback</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic-language.html#dynamic-language-beans-bsh">26.3.4. BeanShell beans</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic-language.html#dynamic-language-scenarios">26.4. Scenarios</a></span></dt><dd><dl><dt><span class="section"><a href="dynamic-language.html#dynamic-language-scenarios-controllers">26.4.1. Scripted Spring MVC Controllers</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-scenarios-validators">26.4.2. Scripted Validators</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic-language.html#dynamic-language-final-notes">26.5. Bits and bobs</a></span></dt><dd><dl><dt><span class="section"><a href="dynamic-language.html#dynamic-language-final-notes-aop">26.5.1. AOP - advising scripted beans</a></span></dt><dt><span class="section"><a href="dynamic-language.html#dynamic-language-final-notes-scopes">26.5.2. Scoping</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic-language.html#dynamic-language-resources">26.6. Further Resources</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="spring-appendices.html">VII. Appendices</a></span></dt><dd><dl><dt><span class="appendix"><a href="classic-spring.html">A. Classic Spring Usage</a></span></dt><dd><dl><dt><span class="section"><a href="classic-spring.html#classic-spring-orm">A.1. Classic ORM usage</a></span></dt><dd><dl><dt><span class="section"><a href="classic-spring.html#classic-spring-hibernate">A.1.1. Hibernate</a></span></dt><dd><dl><dt><span class="section"><a href="classic-spring.html#orm-hibernate-template">A.1.1.1. The HibernateTemplate</a></span></dt><dt><span class="section"><a href="classic-spring.html#orm-hibernate-daos">A.1.1.2. Implementing Spring-based DAOs without callbacks</a></span></dt></dl></dd><dt><span class="section"><a href="classic-spring.html#classic-spring-jdo">A.1.2. JDO</a></span></dt><dd><dl><dt><span class="section"><a href="classic-spring.html#orm-jdo-template">A.1.2.1. JdoTemplate and
        JdoDaoSupport</a></span></dt></dl></dd><dt><span class="section"><a href="classic-spring.html#classic-spring-jpa">A.1.3. JPA</a></span></dt><dd><dl><dt><span class="section"><a href="classic-spring.html#orm-jpa-template">A.1.3.1. JpaTemplate and
        JpaDaoSupport</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="classic-spring.html#clasic-spring-mvc">A.2. Classic Spring MVC</a></span></dt><dt><span class="section"><a href="classic-spring.html#d0e43101">A.3. JMS Usage</a></span></dt><dd><dl><dt><span class="section"><a href="classic-spring.html#d0e43119">A.3.1. JmsTemplate</a></span></dt><dt><span class="section"><a href="classic-spring.html#d0e43139">A.3.2. Asynchronous Message Reception </a></span></dt><dt><span class="section"><a href="classic-spring.html#d0e43158">A.3.3. Connections</a></span></dt><dt><span class="section"><a href="classic-spring.html#d0e43193">A.3.4. Transaction Management</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="classic-aop-spring.html">B. Classic Spring AOP Usage</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcuts">B.1. Pointcut API in Spring</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-concepts">B.1.1. Concepts</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcut-ops">B.1.2. Operations on pointcuts</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcuts-aspectj">B.1.3. AspectJ expression pointcuts</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcuts-impls">B.1.4. Convenience pointcut implementations</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcuts-static">B.1.4.1. Static pointcuts</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcuts-dynamic">B.1.4.2. Dynamic pointcuts</a></span></dt></dl></dd><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcuts-superclasses">B.1.5. Pointcut superclasses</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-pointcuts-custom">B.1.6. Custom pointcuts</a></span></dt></dl></dd><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice">B.2. Advice API in Spring</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice-lifecycle">B.2.1. Advice lifecycles</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice-types">B.2.2. Advice types in Spring</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice-around">B.2.2.1. Interception around advice</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice-before">B.2.2.2. Before advice</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice-throws">B.2.2.3. Throws advice</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice-after-returning">B.2.2.4. After Returning advice</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advice-introduction">B.2.2.5. Introduction advice</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advisor">B.3. Advisor API in Spring</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-pfb">B.4. Using the ProxyFactoryBean to create AOP proxies</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-pfb-1">B.4.1. Basics</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-pfb-2">B.4.2. JavaBean properties</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-pfb-proxy-types">B.4.3. JDK- and CGLIB-based proxies</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-proxying-intf">B.4.4. Proxying interfaces</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-proxying-class">B.4.5. Proxying classes</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-global-advisors">B.4.6. Using 'global' advisors</a></span></dt></dl></dd><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-concise-proxy">B.5. Concise proxy definitions</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-prog">B.6. Creating AOP proxies programmatically with the ProxyFactory</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-advised">B.7. Manipulating advised objects</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-autoproxy">B.8. Using the "autoproxy" facility</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-autoproxy-choices">B.8.1. Autoproxy bean definitions</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-autoproxy">B.8.1.1. BeanNameAutoProxyCreator</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-autoproxy-default">B.8.1.2. DefaultAdvisorAutoProxyCreator</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-autoproxy-abstract">B.8.1.3. AbstractAdvisorAutoProxyCreator</a></span></dt></dl></dd><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-autoproxy-metadata">B.8.2. Using metadata-driven auto-proxying</a></span></dt></dl></dd><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-targetsource">B.9. Using TargetSources</a></span></dt><dd><dl><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-ts-swap">B.9.1. Hot swappable target sources</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-ts-pool">B.9.2. Pooling target sources</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-ts-prototype">B.9.3. Prototype target sources</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-ts-threadlocal">B.9.4. ThreadLocal target sources</a></span></dt></dl></dd><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-extensibility">B.10. Defining new Advice types</a></span></dt><dt><span class="section"><a href="classic-aop-spring.html#classic-aop-api-resources">B.11. Further resources</a></span></dt></dl></dd><dt><span class="appendix"><a href="xsd-config.html">C. XML Schema-based configuration</a></span></dt><dd><dl><dt><span class="section"><a href="xsd-config.html#xsd-config-introduction">C.1. Introduction</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body">C.2. XML Schema-based configuration</a></span></dt><dd><dl><dt><span class="section"><a href="xsd-config.html#xsd-config-body-referencing">C.2.1. Referencing the schemas</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-util">C.2.2. The util schema</a></span></dt><dd><dl><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-util-constant">C.2.2.1. &lt;util:constant/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-util-property-path">C.2.2.2. &lt;util:property-path/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-util-properties">C.2.2.3. &lt;util:properties/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-util-list">C.2.2.4. &lt;util:list/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-util-map">C.2.2.5. &lt;util:map/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-util-set">C.2.2.6. &lt;util:set/&gt;</a></span></dt></dl></dd><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee">C.2.3. The jee schema</a></span></dt><dd><dl><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee-jndi-lookup">C.2.3.1. &lt;jee:jndi-lookup/&gt; (simple)</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee-jndi-lookup-environment-single">C.2.3.2. &lt;jee:jndi-lookup/&gt; (with single JNDI environment setting)</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee-jndi-lookup-evironment-multiple">C.2.3.3. &lt;jee:jndi-lookup/&gt; (with multiple JNDI environment settings)</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee-jndi-lookup-complex">C.2.3.4. &lt;jee:jndi-lookup/&gt; (complex)</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee-local-slsb">C.2.3.5. &lt;jee:local-slsb/&gt; (simple)</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee-local-slsb-complex">C.2.3.6. &lt;jee:local-slsb/&gt; (complex)</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jee-remote-slsb">C.2.3.7. &lt;jee:remote-slsb/&gt;</a></span></dt></dl></dd><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-lang">C.2.4. The lang schema</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-jms">C.2.5. The jms schema</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-tx">C.2.6. The tx (transaction) schema</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-aop">C.2.7. The aop schema</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-context">C.2.8. The context schema</a></span></dt><dd><dl><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-context-pphc">C.2.8.1. &lt;property-placeholder/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-context-ac">C.2.8.2. &lt;annotation-config/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-context-component-scan">C.2.8.3. &lt;component-scan/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-context-ltw">C.2.8.4. &lt;load-time-weaver/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-context-sc">C.2.8.5. &lt;spring-configured/&gt;</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-context-mbe">C.2.8.6. &lt;mbean-export/&gt;</a></span></dt></dl></dd><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-tool">C.2.9. The tool schema</a></span></dt><dt><span class="section"><a href="xsd-config.html#xsd-config-body-schemas-beans">C.2.10. The beans schema</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="extensible-xml.html">D. Extensible XML authoring</a></span></dt><dd><dl><dt><span class="section"><a href="extensible-xml.html#extensible-xml-introduction">D.1. Introduction</a></span></dt><dt><span class="section"><a href="extensible-xml.html#extensible-xml-schema">D.2. Authoring the schema</a></span></dt><dt><span class="section"><a href="extensible-xml.html#extensible-xml-namespacehandler">D.3. Coding a NamespaceHandler</a></span></dt><dt><span class="section"><a href="extensible-xml.html#extensible-xml-parser">D.4. Coding a BeanDefinitionParser</a></span></dt><dt><span class="section"><a href="extensible-xml.html#extensible-xml-registration">D.5. Registering the handler and the schema</a></span></dt><dd><dl><dt><span class="section"><a href="extensible-xml.html#extensible-xml-registration-spring-handlers">D.5.1. 'META-INF/spring.handlers'</a></span></dt><dt><span class="section"><a href="extensible-xml.html#extensible-xml-registration-spring-schemas">D.5.2. 'META-INF/spring.schemas'</a></span></dt></dl></dd><dt><span class="section"><a href="extensible-xml.html#extensible-xml-using">D.6. Using a custom extension in your Spring XML configuration</a></span></dt><dt><span class="section"><a href="extensible-xml.html#extensible-xml-meat">D.7. Meatier examples</a></span></dt><dd><dl><dt><span class="section"><a href="extensible-xml.html#extensible-xml-custom-nested">D.7.1. Nesting custom tags within custom tags</a></span></dt><dt><span class="section"><a href="extensible-xml.html#extensible-xml-custom-just-attributes">D.7.2. Custom attributes on 'normal' elements</a></span></dt></dl></dd><dt><span class="section"><a href="extensible-xml.html#extensible-xml-resources">D.8. Further Resources</a></span></dt></dl></dd><dt><span class="appendix"><a href="springbeansdtd.html">E. spring-beans-2.0.dtd</a></span></dt><dt><span class="appendix"><a href="spring.tld.html">F. spring.tld</a></span></dt><dd><dl><dt><span class="section"><a href="spring.tld.html#spring.tld-intro">F.1. Introduction</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.bind">F.2. The bind tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.escapeBody">F.3. The escapeBody tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.hasBindErrors">F.4. The hasBindErrors tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.htmlEscape">F.5. The htmlEscape tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.message">F.6. The message tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.nestedPath">F.7. The nestedPath tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.theme">F.8. The theme tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.transform">F.9. The transform tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.url">F.10. The url tag</a></span></dt><dt><span class="section"><a href="spring.tld.html#spring.tld.eval">F.11. The eval tag</a></span></dt></dl></dd><dt><span class="appendix"><a href="spring-form.tld.html">G. spring-form.tld</a></span></dt><dd><dl><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld-intro">G.1. Introduction</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.checkbox">G.2. The checkbox tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.checkboxes">G.3. The checkboxes tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.errors">G.4. The errors tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.form">G.5. The form tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.hidden">G.6. The hidden tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.input">G.7. The input tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.label">G.8. The label tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.option">G.9. The option tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.options">G.10. The options tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.password">G.11. The password tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.radiobutton">G.12. The radiobutton tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.radiobuttons">G.13. The radiobuttons tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.select">G.14. The select tag</a></span></dt><dt><span class="section"><a href="spring-form.tld.html#spring-form.tld.textarea">G.15. The textarea tag</a></span></dt></dl></dd></dl></dd></dl></div></div><!--Begin LoopFuse code--><script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"></script><script type="text/javascript">
			_lf_cid = "LF_48be82fa";
			_lf_remora();
		</script><!--End LoopFuse code--><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="spring-introduction.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Part&nbsp;I.&nbsp;Overview of Spring Framework</td></tr></table></div><!-- Begin 2nd Google code - a mod -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
<script type="text/javascript">
var OrgTracker = _gat._getTracker("UA-2728886-2"); OrgTracker._setDomainName("none");
OrgTracker._setAllowLinker(true);
OrgTracker._trackPageview();
</script>
 <!-- End 2nd Google code -->


<script type="text/javascript">

function detectLastFrame() {
   var thisF = this.window;
   var allF = parent.top.frames;
   return allF[allF.length - 1] == thisF; }

// Only inject the following code if this is a normal page or the last // frame of a frameset.
if (parent.top.frames.length == 0 || detectLastFrame()) {
    // Inject the SpringSource search widget too.
    document.write(unescape("%3Cscript src='http://search.springsource.org/widget/searchtool.js' type='text/javascript'%3E%3C/script%3E"));
    // Inject the Eloqua code
    document.write(unescape("%3Cscript src='/elqNow/elqCfg.js' type='text/javascript'%3E%3C/script%3E"));
    document.write(unescape("%3Cscript src='/elqNow/elqImg.js' type='text/javascript'%3E%3C/script%3E"));

}
</script>
</body>
</html>